#include <bits/stdc++.h>
using namespace std;
int v[31],a[31],n;
bool isPrime(int n)
{
    for(int i=2;i<=sqrt(n);i++)
        if(n%i==0)
            return false;
    return true;
}
bool isPrimePair(int pos)
{
    if(pos==1)
        return isPrime(pos);
    else if(pos==n)
        return isPrime(a[1]+a[n]);
    return isPrime(a[pos-1]+a[pos]);
}
void dfs(int cnt)
{
    if(cnt>1&&isPrimePair(cnt)==false ) //新填的数不构成素数环，退出
        return;
    if(cnt==n&&isPrimePair(n))
    {
        for(int i=1;i<=n;i++)
            cout<<a[i]<<" ";
        exit(0); //只需要一种，程序强制退出
    }
    for(int i=1;i<=n;i++)
    {
        if(v[i]==0 ) //没有被访问且与上一个元素之和相加是素数
        {
            a[cnt+1]=i;
            v[i]=1; //标记已填过数了
            dfs(cnt+1);
            v[i]=0;// 回溯
        }
    }
}
int main()
{
    cin>>n;
    a[1]=1;
    v[1]=1;
    dfs(1);
    return 0;
}